import { QuestionCircleFilled } from "@ant-design/icons"
import { Tooltip } from "antd"
import { ColumnType } from "antd/es/table"
import dayjs from "dayjs"

import { useDataMapping, useDigital } from "@/hooks"
import { useLocale } from "@/locales"

export interface RootObject {
	userName: string
	nickName: string
	accountType: string
	parentProxyName: string
	topProxyName: string
	accountStatus: string
	labelName: string
	windControlName: string
	betCount: number
	betAmount: number
	validBetAmount: number
	netAmount: number
	memberCount: number
	rebateAmount: number
	memberRebateAmountByProxy: number
	memberRebateAmountByPlat: number
	artificialPatchAmount: number
	serviceChargeRound: number
	valueAddedTotalAmount: number
	netProfit: number
	dateTime: string
	venueName: string
	venueType: string
	betType: string
	effectiveBetAmount: number
	pumPing: number
	betProfitLoss: number
	serviceAmountContribution: number
	validBetRecalculationAdjustmentAmount: number
	realValidBetAmount: number
	cycleName: string
	memberId: string
	merchantId: string
	memberName: string
	parentProxyId: string
	topProxyId: string
	merchantName: string
	businessModel: number
	dxClubBetCount: number
	dxClubTotalServiceChargeContributionAmount: number
	dxClubNetAmount: number
	dxClubServiceChargeRoundAmount: number
	dxInsureBetCount: number
	dxInsureBetAmount: number
	dxInsureValidBetAmount: number
	dxClubServiceChargeHandAmount: number
	dxInsureNetAmount: number
	dxValueAddedTotalAmount: number
	dxClubMemberRebateAmount: number
	dxClubProxyRebateAmount: number
	dxMemberVenueNetAmount: number
	otherBetCount: number
	otherBetAmount: number
	otherValidBetAmount: number
	otherValidBetRecalculationAdjustmentAmount: number
	otherFactValidBetAmount: number
	otherNetAmount: number
	otherNetRecalculationAdjustmentAmount: number
	otherFactNetAmount: number
	otherVenueMemberRebateAmount: number
	otherProxyRebateAmount: number
	otherMemberRebateRecalculationAdjustmentAmount: number
	otherAmount: number
	otherMemberVenueNetAmount: number
	accountAdjustmentAmount: number
	rebateAdjustmentAmount: number
	betNetAmount: number
	tyBetCount: number
	tyBetAmount: number
	tyValidBetAmount: number
	tyValidBetRecalculationAdjustmentAmount: number
	tyFactValidBetAmount: number
	tyNetAmount: number
	tyNetRecalculationAdjustmentAmount: number
	tyFactNetAmount: number
	tyVenueMemberRebateAmount: number
	tyProxyRebateAmount: number
	tyMemberRebateRecalculationAdjustmentAmount: number
	tyMemberVenueNetAmount: number
	zrBetCount: number
	zrBetAmount: number
	zrValidBetAmount: number
	zrValidBetRecalculationAdjustmentAmount: number
	zrFactValidBetAmount: number
	zrNetAmount: number
	zrNetRecalculationAdjustmentAmount: number
	zrFactNetAmount: number
	zrVenueMemberRebateAmount: number
	zrProxyRebateAmount: number
	zrMemberRebateRecalculationAdjustmentAmount: number
	zrMemberVenueNetAmount: number
	zrRewardAmount: number
	qpBetCount: number
	qpBetAmount: number
	qpValidBetAmount: number
	qpNetAmount: number
	qpVenueMemberRebateAmount: number
	qpProxyRebateAmount: number
	qpMemberVenueNetAmount: number
	djBetCount: number
	djBetAmount: number
	djValidBetAmount: number
	djValidBetRecalculationAdjustmentAmount: number
	djFactValidBetAmount: number
	djNetAmount: number
	djNetRecalculationAdjustmentAmount: number
	djFactNetAmount: number
	djVenueMemberRebateAmount: number
	djProxyRebateAmount: number
	djMemberRebateRecalculationAdjustmentAmount: number
	djMemberVenueNetAmount: number
	cpBetCount: number
	cpBetAmount: number
	cpValidBetAmount: number
	cpValidBetRecalculationAdjustmentAmount: number
	cpFactValidBetAmount: number
	cpNetAmount: number
	cpNetRecalculationAdjustmentAmount: number
	dyMemberRebateRecalculationAdjustmentAmount: number
	cpFactNetAmount: number
	cpVenueMemberRebateAmount: number
	cpProxyRebateAmount: number
	cpMemberRebateRecalculationAdjustmentAmount: number
	cpMemberVenueNetAmount: number
	dyBetCount: number
	dyBetAmount: number
	dyValidBetAmount: number
	dyNetAmount: number
	dyVenueMemberRebateAmount: number
	dyProxyRebateAmount: number
	dyMemberVenueNetAmount: number
	dyActivityBonusAmount: number
	dxClubServiceChargeHandContributionAmount: number
	dxClubServiceChargeRoundContributionAmount: number
	serviceChargeHandContributionRate: number
	serviceChargeRoundContributionRate: number
	accountFinanceAdjustSubAmount: number
	accountFinanceAdjustAddAmount: number
	accountOperatorAdjustSubAmount: number
	accountOperatorAdjustAddAmount: number
	accountViolationAmount: number
	tyPlatformRebateAmount: number
	zrPlatformRebateAmount: number
	qpPlatformRebateAmount: number
	djPlatformRebateAmount: number
	cpPlatformRebateAmount: number
	dyPlatformRebateAmount: number
	dxClubPlatformRebateAmount: number
	platformRebateAmount: number
	otherPlatformRebateAmount: number
	totalTyPlatformRebateAmount: number
	totalZrPlatformRebateAmount: number
	totalQpPlatformRebateAmount: number
	totalDjPlatformRebateAmount: number
	totalCpPlatformRebateAmount: number
	totalDyPlatformRebateAmount: number
	qpMemberRebateRecalculationAdjustmentAmount: number
	totalDxClubPlatformRebateAmount: number
	totalPlatformRebateAmount: number
	totalOtherPlatformRebateAmount: number
	totalOtherTypeAmount: number
	totalAccountAdjustAmount: number
	totalOtherAmount: number
	dxSquidNetAmount: number
	dxClubServiceChargeHandBetCount: number
	dxClubServiceChargeContributionAmount: number
}

const useReportColumn = () => {
	const { newFormat, formatMessage } = useLocale()
	const { getFromDic } = useDataMapping()
	const { renderFormat, renderColor, renderCopyNo } = useDigital()

	const renderTooltip = (text: string, tooltip = `${text}_tip`) => (
		<Tooltip title={newFormat(tooltip)}>
			{newFormat(text)}
			<QuestionCircleFilled />
		</Tooltip>
	)

	const userName: ColumnType<RootObject> = {
		key: "userName",
		dataIndex: "userName",
		title: newFormat("report.user_name"),
		align: "center",
		fixed: "left",
		width: 150,
		render: renderCopyNo
	}
	const nickName: ColumnType<RootObject> = {
		key: "nickName",
		dataIndex: "nickName",
		align: "center",
		width: 150,
		title: newFormat("report.nick_name")
	}
	const accountType: ColumnType<RootObject> = {
		key: "accountType",
		dataIndex: "accountType",
		align: "center",
		width: 150,
		title: newFormat("report.account_type"),
		render: getFromDic("accountType", false)
	}
	const member_parentProxyName: ColumnType<RootObject> = {
		key: "parentProxyName",
		dataIndex: "parentProxyName",
		title: newFormat("report.parent_proxy_name"),
		width: 150,
		align: "center",
		render: renderCopyNo
	}
	const member_topProxyName: ColumnType<RootObject> = {
		key: "topProxyName",
		dataIndex: "topProxyName",
		title: newFormat("report.top_proxy_name"),
		width: 150,
		align: "center",
		render: renderCopyNo
	}
	const labelName: ColumnType<RootObject> = {
		key: "labelName",
		dataIndex: "labelName",
		title: newFormat("report.label_name"),
		width: 100,
		align: "center",
		render: (v: string) => v || "-"
	}
	const windControlName: ColumnType<RootObject> = {
		key: "windControlName",
		dataIndex: "windControlName",
		title: newFormat("report.risk_control_level"),
		width: 150,
		ellipsis: true,
		align: "center",
		render: (v: string) => v || "-"
	}
	const member_betCount: ColumnType<RootObject> = {
		key: "betCount",
		dataIndex: "betCount",
		title: newFormat("report.member_bet_count"),
		width: 200,
		align: "center",
		sorter: (a, b) => a.betCount - b.betCount
	}
	const daily_betCount: ColumnType<RootObject> = {
		key: "betCount",
		dataIndex: "betCount",
		title: newFormat("report.bet_count"),
		width: 200,
		align: "center",
		sorter: (a, b) => a.betCount - b.betCount
	}
	const member_betAmount: ColumnType<RootObject> = {
		key: "betAmount",
		dataIndex: "betAmount",
		title: newFormat("report.member_bet_amount"),
		align: "center",
		width: 200,
		render: renderFormat
	}
	const daily_betAmount: ColumnType<RootObject> = {
		key: "betAmount",
		dataIndex: "betAmount",
		title: newFormat("report.member_bet_amount"),
		align: "center",
		width: 200,
		render: renderFormat,
		sorter: (a, b) => a.betAmount - b.betAmount
	}
	const member_validBetAmount: ColumnType<RootObject> = {
		key: "validBetAmount",
		dataIndex: "validBetAmount",
		title: newFormat("report.member_valid_bet_amount"),
		align: "center",
		width: 200,
		render: renderFormat,
		sorter: (a, b) => a.validBetAmount - b.validBetAmount
	}
	const daily_netAmount: ColumnType<RootObject> = {
		key: "netAmount",
		dataIndex: "netAmount",
		title: newFormat("report.net_amount"), // Betting profit and loss
		align: "center",
		width: 200,
		sorter: (a, b) => a.netAmount - b.netAmount,
		render: renderColor
	}
	const member_netAmount: ColumnType<RootObject> = {
		title: renderTooltip("report.proxy_total_net_amount"),
		key: "netAmount",
		dataIndex: "netAmount",
		align: "center",
		width: 200,
		render: renderColor
	}
	const memberRebateAmountByProxy: ColumnType<RootObject> = {
		key: "memberRebateAmountByProxy",
		dataIndex: "memberRebateAmountByProxy",
		title: newFormat("report.proxy_grant_member_rebate"), // Membership rebate
		align: "center",
		width: 200,
		defaultSortOrder: "descend",
		sorter: (a, b) => a.memberRebateAmountByProxy - b.memberRebateAmountByProxy,
		render: renderColor
	}
	const memberRebateAmountByPlat: ColumnType<RootObject> = {
		key: "memberRebateAmountByPlat",
		dataIndex: "memberRebateAmountByPlat",
		title: newFormat("report.platform_grant_member_rebate"),
		width: 200,
		align: "center",
		render: renderFormat
	}
	const artificialPatchAmount: ColumnType<RootObject> = {
		key: "artificialPatchAmount",
		dataIndex: "artificialPatchAmount",
		title: <span style={{ color: "red" }}>{newFormat("report.artificial_patch_amount")}</span>, // Other adjustments
		width: 200,
		align: "center",
		render: renderFormat
	}
	const sort_artificialPatchAmount: ColumnType<RootObject> = {
		key: "artificialPatchAmount",
		dataIndex: "artificialPatchAmount",
		title: newFormat("report.artificial_patch_amount"),
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.artificialPatchAmount - b.artificialPatchAmount
	}
	const serviceChargeRound: ColumnType<RootObject> = {
		key: "serviceChargeRound",
		dataIndex: "serviceChargeRound",
		title: newFormat("report.service_charge_round"),
		width: 200,
		align: "center",
		render: renderFormat
	}
	const valueAddedTotalAmount: ColumnType<RootObject> = {
		key: "valueAddedTotalAmount",
		dataIndex: "valueAddedTotalAmount",
		title: newFormat("label.value_added_total_amount"),
		width: 200,
		align: "center",
		render: renderFormat
	}
	const member_netProfit: any = {
		key: "netProfit",
		dataIndex: "netProfit",
		titleText: formatMessage({ id: "report.net_profit" }),
		title: renderTooltip("report.member_net_profit"),
		width: 200,
		align: "center",
		render: renderColor,
		sorter: (a: any, b: any) => a.netProfit - b.netProfit
	}
	const daily_netProfit: any = {
		key: "netProfits",
		dataIndex: "netProfits",
		title: () => (
			<Tooltip title={newFormat("report.net_profit_tip")}>
				{" "}
				{newFormat("report.net_profit")} <QuestionCircleFilled />{" "}
			</Tooltip>
		),
		titleText: formatMessage({ id: "report.net_profit" }),
		width: 120,
		align: "center",
		render: renderColor,
		sorter: (a: any, b: any) => a.netProfit - b.netProfit
	}
	const dateTime: ColumnType<RootObject> = {
		key: "dateTime",
		dataIndex: "dateTime",
		title: newFormat("report.date_time"),
		width: 200,
		align: "center",
		render: (v: string) => dayjs(String(v), "YYYYMMDD").format("YYYY-MM-DD")
	}
	const staticsDate: ColumnType<RootObject> = {
		key: "staticsDate",
		dataIndex: "staticsDate",
		title: newFormat("report.statistic_date"),
		width: 200,
		align: "center"
	}
	const venueName: ColumnType<RootObject> = {
		key: "venueName",
		dataIndex: "venueName",
		title: newFormat("report.venue_name"),
		width: 200,
		align: "center",
		render: renderFormat
	}
	const venueType: ColumnType<RootObject> = {
		key: "venueType",
		dataIndex: "venueType",
		title: newFormat("report.venue_type"),
		width: 200,
		align: "center",
		render: getFromDic("bwVenueTypeList", false)
	}
	const betType: ColumnType<RootObject> = {
		key: "betType",
		dataIndex: "betType",
		title: newFormat("report.bet_type"),
		width: 200,
		align: "center",
		render: renderFormat
	}
	const effectiveBetAmount: ColumnType<RootObject> = {
		key: "effectiveBetAmount",
		dataIndex: "effectiveBetAmount",
		title: newFormat("report.effective_bet_amount"),
		width: 200,
		align: "center",
		render: renderFormat
	}
	const pumPing: ColumnType<RootObject> = {
		key: "pumPing",
		dataIndex: "pumPing",
		title: newFormat("report.pum_pin"),
		width: 200,
		align: "center",
		render: renderFormat
	}
	const betProfitLoss: ColumnType<RootObject> = {
		key: "betProfitLoss",
		dataIndex: "betProfitLoss",
		title: newFormat("report.bet_profit_loss"),
		width: 200,
		align: "center",
		render: renderFormat
	}
	const member_rebateAmount: ColumnType<RootObject> = {
		key: "rebateAmount",
		dataIndex: "rebateAmount",
		title: renderTooltip("report.member_rebate_amount"),
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.rebateAmount - b.rebateAmount
	}
	const serviceAmountContribution: ColumnType<RootObject> = {
		key: "serviceAmountContribution",
		dataIndex: "serviceAmountContribution",
		title: newFormat("report.service_amount_contribution"),
		width: 200,
		align: "center",
		defaultSortOrder: "descend",
		sorter: (a, b) => a.serviceAmountContribution - b.serviceAmountContribution
	}
	const betterNo: ColumnType<RootObject> = {
		key: "memberCount",
		dataIndex: "memberCount",
		title: newFormat("report.better_no"),
		width: 200,
		align: "center",
		sorter: (a, b) => a.memberCount - b.memberCount
	}
	const memberAccount: ColumnType<RootObject> = {
		key: "loginUser",
		dataIndex: "loginUser",
		title: newFormat("report.member_account"),
		width: 200,
		align: "center"
	}
	const deviceNumber: ColumnType<RootObject> = {
		key: "deviceNumber",
		dataIndex: "deviceNumber",
		title: newFormat("report.device_number"),
		width: 200,
		align: "center"
	}
	const deviceVersion: ColumnType<RootObject> = {
		key: "deviceVersion",
		dataIndex: "deviceVersion",
		title: newFormat("report.device_version"),
		width: 200,
		align: "center"
	}
	const checkedStatus: ColumnType<RootObject> = {
		key: "checkStatus",
		dataIndex: "checkStatus",
		title: newFormat("report.checked_status"),
		width: 200,
		align: "center"
	}
	const loginIP: ColumnType<RootObject> = {
		key: "loginIP",
		dataIndex: "loginIP",
		title: newFormat("report.login_ip_risk_control_level"),
		width: 200,
		align: "center"
	}
	const locationIP: ColumnType<RootObject> = {
		key: "locationIP",
		dataIndex: "locationIP",
		title: newFormat("report.location_ip"),
		width: 200,
		align: "center"
	}
	const loginAddress: ColumnType<RootObject> = {
		key: "loginAddress",
		dataIndex: "loginAddress",
		title: newFormat("report.login_address"),
		width: 200,
		align: "center"
	}
	const loginStatus: ColumnType<RootObject> = {
		key: "loginStatus",
		dataIndex: "loginStatus",
		title: newFormat("report.login_status"),
		width: 200,
		align: "center"
	}
	const loginTerminal: ColumnType<RootObject> = {
		key: "loginTerminal",
		dataIndex: "loginTerminal",
		title: newFormat("report.login_terminal"),
		width: 200,
		align: "center"
	}
	const loginTime: ColumnType<RootObject> = {
		key: "loginTime",
		dataIndex: "loginTime",
		title: newFormat("report.login_time"),
		width: 200,
		align: "center"
	}
	const loginUser: ColumnType<RootObject> = {
		key: "loginUser",
		dataIndex: "loginUser",
		title: newFormat("report.login_user"),
		width: 200,
		align: "center"
	}
	const validBetRecalculationAdjustmentAmount: ColumnType<RootObject> = {
		key: "validBetRecalculationAdjustmentAmount",
		dataIndex: "validBetRecalculationAdjustmentAmount",
		title: newFormat("report.bet_recalculation"),
		width: 200,
		align: "center",
		defaultSortOrder: "descend",
		sorter: (a, b) => a.validBetRecalculationAdjustmentAmount - b.validBetRecalculationAdjustmentAmount
	}
	const realValidBetAmount: ColumnType<RootObject> = {
		key: "realValidBetAmount",
		dataIndex: "realValidBetAmount",
		title: newFormat("report.real_valid_bet_amount"),
		width: 200,
		align: "center",
		defaultSortOrder: "descend",
		sorter: (a, b) => a.realValidBetAmount - b.realValidBetAmount
	}
	// 账号信息
	const cycleName: ColumnType<RootObject> = {
		key: "cycleName",
		dataIndex: "cycleName",
		title: newFormat("report.statistics_data"),
		width: 200,
		align: "center"
	}

	const member_memberName: ColumnType<RootObject> = {
		key: "memberName",
		dataIndex: "memberName",
		title: newFormat("common.member_number"),
		width: 200,
		align: "center",
		render: renderCopyNo
	}

	// dx
	const dxClubBetCount: ColumnType<RootObject> = {
		title: newFormat("report.dx_club_bet_count"),
		dataIndex: "dxClubBetCount",
		key: "dxClubBetCount",
		width: 200,
		align: "center",
		sorter: (a, b) => a.dxClubBetCount - b.dxClubBetCount
	}
	const dxClubServiceChargeRoundAmount: ColumnType<RootObject> = {
		title: renderTooltip("report.dx_club_service_charge_round_amount"),
		dataIndex: "dxClubServiceChargeRoundAmount",
		key: "dxClubServiceChargeRoundAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.dxClubServiceChargeRoundAmount - b.dxClubServiceChargeRoundAmount
	}
	const dxClubServiceChargeHandAmount: ColumnType<RootObject> = {
		title: renderTooltip("report.dx_club_service_charge_hand_amount"),
		dataIndex: "dxClubServiceChargeHandAmount",
		key: "dxClubServiceChargeHandAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.dxClubServiceChargeHandAmount - b.dxClubServiceChargeHandAmount
	}
	const dxClubServiceChargeHandBetCount: ColumnType<RootObject> = {
		title: newFormat("report.dx_club_bet_count"),
		dataIndex: "dxClubServiceChargeHandBetCount",
		key: "dxClubServiceChargeHandBetCount",
		width: 200,
		sorter: (a, b) => a.dxClubServiceChargeHandBetCount - b.dxClubServiceChargeHandBetCount,
		align: "center"
	}
	const dxClubServiceChargeContributionAmount: ColumnType<RootObject> = {
		title: newFormat("report.dx_club_total_service_charge_contribution_amount"),
		dataIndex: "dxClubServiceChargeContributionAmount",
		key: "dxClubServiceChargeContributionAmount",
		width: 200,
		align: "center",
		sorter: (a, b) => a.dxClubServiceChargeContributionAmount - b.dxClubServiceChargeContributionAmount
	}
	const dxClubTotalServiceChargeContributionAmount: ColumnType<RootObject> = {
		title: renderTooltip("report.dx_club_total_service_charge_contribution_amount"),
		dataIndex: "dxClubTotalServiceChargeContributionAmount",
		key: "dxClubTotalServiceChargeContributionAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.dxClubTotalServiceChargeContributionAmount - b.dxClubTotalServiceChargeContributionAmount
	}
	const dxClubNetAmount: ColumnType<RootObject> = {
		title: newFormat("report.dx_club_net_amount"),
		dataIndex: "dxClubNetAmount",
		key: "dxClubNetAmount",
		width: 200,
		align: "center",
		render: renderColor,
		sorter: (a, b) => a.dxClubNetAmount - b.dxClubNetAmount
	}
	const dxSquidNetAmount: ColumnType<RootObject> = {
		title: newFormat("report.dx_squid_net_amount"),
		dataIndex: "dxSquidNetAmount",
		key: "dxSquidNetAmount",
		width: 200,
		align: "center",
		sorter: (a, b) => a.dxSquidNetAmount - b.dxSquidNetAmount,
		render: renderColor
	}
	const dxInsureBetCount: ColumnType<RootObject> = {
		title: newFormat("report.dx_insure_bet_count"),
		dataIndex: "dxInsureBetCount",
		key: "dxInsureBetCount",
		width: 200,
		sorter: (a, b) => a.dxInsureBetCount - b.dxInsureBetCount,
		align: "center"
	}
	const dxInsureBetAmount: ColumnType<RootObject> = {
		title: newFormat("report.dx_insure_bet_amount"),
		dataIndex: "dxInsureBetAmount",
		key: "dxInsureBetAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.dxInsureBetAmount - b.dxInsureBetAmount
	}
	const dxInsureValidBetAmount: ColumnType<RootObject> = {
		title: newFormat("report.dx_insure_valid_bet_amount"),
		dataIndex: "dxInsureValidBetAmount",
		key: "dxInsureValidBetAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.dxInsureValidBetAmount - b.dxInsureValidBetAmount
	}
	const dxInsureNetAmount: ColumnType<RootObject> = {
		title: newFormat("report.dx_insure_net_amount"),
		dataIndex: "dxInsureNetAmount",
		key: "dxInsureNetAmount",
		width: 200,
		align: "center",
		render: renderColor,
		sorter: (a, b) => a.dxInsureNetAmount - b.dxInsureNetAmount
	}
	const dxValueAddedTotalAmount: ColumnType<RootObject> = {
		title: renderTooltip("report.dx_value_added_total_amount"),
		dataIndex: "dxValueAddedTotalAmount",
		key: "dxValueAddedTotalAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.dxValueAddedTotalAmount - b.dxValueAddedTotalAmount
	}
	const dxClubMemberRebateAmount: ColumnType<RootObject> = {
		title: newFormat("report.dx_club_member_rebate_amount"),
		dataIndex: "dxClubMemberRebateAmount",
		key: "dxClubMemberRebateAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.dxClubMemberRebateAmount - b.dxClubMemberRebateAmount
	}
	const dxMemberVenueNetAmount: ColumnType<RootObject> = {
		title: renderTooltip("report.dx_member_venue_net_amount"),
		dataIndex: "dxMemberVenueNetAmount",
		key: "dxMemberVenueNetAmount",
		width: 200,
		align: "center",
		render: renderColor,
		sorter: (a, b) => a.dxMemberVenueNetAmount - b.dxMemberVenueNetAmount
	}
	// )/ other
	const otherBetNetAmount: ColumnType<RootObject> = {
		title: newFormat("report.net_amount"),
		dataIndex: "otherBetNetAmount",
		key: "otherBetNetAmount",
		width: 200,
		align: "center",
		render: renderColor
	}
	const otherBetCount: ColumnType<RootObject> = {
		title: newFormat("report.other_bet_count"),
		dataIndex: "otherBetCount",
		key: "otherBetCount",
		width: 200,
		sorter: (a, b) => a.otherBetCount - b.otherBetCount,
		align: "center"
	}
	const otherBetAmount: ColumnType<RootObject> = {
		title: newFormat("report.other_bet_amount"),
		dataIndex: "otherBetAmount",
		key: "otherBetAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.otherBetAmount - b.otherBetAmount
	}
	const otherValidBetAmount: ColumnType<RootObject> = {
		title: newFormat("report.other_valid_bet_amount"),
		dataIndex: "otherValidBetAmount",
		key: "otherValidBetAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.otherValidBetAmount - b.otherValidBetAmount
	}
	const otherValidBetRecalculationAdjustmentAmount: ColumnType<RootObject> = {
		title: newFormat("report.other_valid_bet_recalculation_adjustment_amount"),
		dataIndex: "otherValidBetRecalculationAdjustmentAmount",
		key: "otherValidBetRecalculationAdjustmentAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.otherValidBetRecalculationAdjustmentAmount - b.otherValidBetRecalculationAdjustmentAmount
	}
	const otherFactValidBetAmount: ColumnType<RootObject> = {
		title: newFormat("report.other_fact_valid_bet_amount"),
		dataIndex: "otherFactValidBetAmount",
		key: "otherFactValidBetAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.otherFactValidBetAmount - b.otherFactValidBetAmount
	}
	const otherNetAmount: ColumnType<RootObject> = {
		title: newFormat("report.other_net_amount"),
		dataIndex: "otherNetAmount",
		key: "otherNetAmount",
		width: 200,
		align: "center",
		render: renderColor,
		sorter: (a, b) => a.otherNetAmount - b.otherNetAmount
	}
	const otherNetRecalculationAdjustmentAmount: ColumnType<RootObject> = {
		title: newFormat("report.other_net_recalculation_adjustment_amount"),
		dataIndex: "otherNetRecalculationAdjustmentAmount",
		key: "otherNetRecalculationAdjustmentAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.otherNetRecalculationAdjustmentAmount - b.otherNetRecalculationAdjustmentAmount
	}
	const otherFactNetAmount: ColumnType<RootObject> = {
		title: newFormat("report.other_fact_net_amount"),
		dataIndex: "otherFactNetAmount",
		key: "otherFactNetAmount",
		width: 200,
		align: "center",
		render: renderColor,
		sorter: (a, b) => a.otherFactNetAmount - b.otherFactNetAmount
	}
	const otherVenueMemberRebateAmount: ColumnType<RootObject> = {
		title: newFormat("report.other_venue_member_rebate_amount"),
		dataIndex: "otherVenueMemberRebateAmount",
		key: "otherVenueMemberRebateAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.otherVenueMemberRebateAmount - b.otherVenueMemberRebateAmount
	}
	const otherMemberRebateRecalculationAdjustmentAmount: ColumnType<RootObject> = {
		title: newFormat("report.other_member_rebate_recalculation_adjustment_amount"),
		dataIndex: "otherMemberRebateRecalculationAdjustmentAmount",
		key: "otherMemberRebateRecalculationAdjustmentAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.otherMemberRebateRecalculationAdjustmentAmount - b.otherMemberRebateRecalculationAdjustmentAmount
	}
	const totalOtherAmount: ColumnType<RootObject> = {
		title: renderTooltip("report.total_other_amount"),
		dataIndex: "totalOtherAmount",
		key: "totalOtherAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.totalOtherAmount - b.totalOtherAmount
	}
	const otherMemberVenueNetAmount: ColumnType<RootObject> = {
		title: renderTooltip("report.other_member_venue_net_amount"),
		dataIndex: "otherMemberVenueNetAmount",
		key: "otherMemberVenueNetAmount",
		width: 200,
		align: "center",
		render: renderColor,
		sorter: (a, b) => a.otherMemberVenueNetAmount - b.otherMemberVenueNetAmount
	}
	const accountAdjustmentAmount: ColumnType<RootObject> = {
		title: newFormat("report.account_adjustment_amount"),
		dataIndex: "accountAdjustmentAmount",
		key: "accountAdjustmentAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.accountAdjustmentAmount - b.accountAdjustmentAmount
	}
	const rebateAdjustmentAmount: ColumnType<RootObject> = {
		title: newFormat("report.rebate_adjustment_amount"),
		dataIndex: "rebateAdjustmentAmount",
		key: "rebateAdjustmentAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.rebateAdjustmentAmount - b.rebateAdjustmentAmount
	}
	const betNetAmount: ColumnType<RootObject> = {
		title: renderTooltip("report.bet_net_amount"),
		dataIndex: "betNetAmount",
		key: "betNetAmount",
		width: 200,
		align: "center",
		render: renderColor,
		sorter: (a, b) => b.betNetAmount - a.betNetAmount
	}
	// ty
	const tyBetCount: ColumnType<RootObject> = {
		title: newFormat("report.ty_bet_count"),
		dataIndex: "tyBetCount",
		key: "tyBetCount",
		width: 200,
		sorter: (a, b) => a.tyBetCount - b.tyBetCount,
		align: "center"
	}
	const tyBetAmount: ColumnType<RootObject> = {
		title: newFormat("report.ty_bet_amount"),
		dataIndex: "tyBetAmount",
		key: "tyBetAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.tyBetAmount - b.tyBetAmount
	}
	const tyValidBetAmount: ColumnType<RootObject> = {
		title: newFormat("report.ty_valid_bet_amount"),
		dataIndex: "tyValidBetAmount",
		key: "tyValidBetAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.tyValidBetAmount - b.tyValidBetAmount
	}
	const tyValidBetRecalculationAdjustmentAmount: ColumnType<RootObject> = {
		title: newFormat("report.ty_valid_bet_recalculation_adjustment_amount"),
		dataIndex: "tyValidBetRecalculationAdjustmentAmount",
		key: "tyValidBetRecalculationAdjustmentAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.tyValidBetRecalculationAdjustmentAmount - b.tyValidBetRecalculationAdjustmentAmount
	}
	const tyFactValidBetAmount: ColumnType<RootObject> = {
		title: newFormat("report.ty_fact_valid_bet_amount"),
		dataIndex: "tyFactValidBetAmount",
		key: "tyFactValidBetAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.tyFactValidBetAmount - b.tyFactValidBetAmount
	}
	const tyNetAmount: ColumnType<RootObject> = {
		title: newFormat("report.ty_net_amount"),
		dataIndex: "tyNetAmount",
		key: "tyNetAmount",
		width: 200,
		align: "center",
		render: renderColor,
		sorter: (a, b) => a.tyNetAmount - b.tyNetAmount
	}
	const tyNetRecalculationAdjustmentAmount: ColumnType<RootObject> = {
		title: newFormat("report.ty_net_recalculation_adjustment_amount"),
		dataIndex: "tyNetRecalculationAdjustmentAmount",
		key: "tyNetRecalculationAdjustmentAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.tyNetRecalculationAdjustmentAmount - b.tyNetRecalculationAdjustmentAmount
	}
	const tyFactNetAmount: ColumnType<RootObject> = {
		title: newFormat("report.ty_fact_net_amount"),
		dataIndex: "tyFactNetAmount",
		key: "tyFactNetAmount",
		width: 200,
		align: "center",
		render: renderColor,
		sorter: (a, b) => a.tyFactNetAmount - b.tyFactNetAmount
	}
	const tyVenueMemberRebateAmount: ColumnType<RootObject> = {
		title: newFormat("report.ty_venue_member_rebate_amount"),
		dataIndex: "tyVenueMemberRebateAmount",
		key: "tyVenueMemberRebateAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.tyVenueMemberRebateAmount - b.tyVenueMemberRebateAmount
	}
	const tyMemberRebateRecalculationAdjustmentAmount: ColumnType<RootObject> = {
		title: newFormat("report.ty_member_rebate_recalculation_adjustment_amount"),
		dataIndex: "tyMemberRebateRecalculationAdjustmentAmount",
		key: "tyMemberRebateRecalculationAdjustmentAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.tyMemberRebateRecalculationAdjustmentAmount - b.tyMemberRebateRecalculationAdjustmentAmount
	}
	const tyMemberVenueNetAmount: ColumnType<RootObject> = {
		title: renderTooltip("report.ty_member_venue_net_amount"),
		dataIndex: "tyMemberVenueNetAmount",
		key: "tyMemberVenueNetAmount",
		width: 200,
		align: "center",
		render: renderColor,
		sorter: (a, b) => a.tyMemberVenueNetAmount - b.tyMemberVenueNetAmount
	}
	// zr
	const zrBetCount: ColumnType<RootObject> = {
		title: newFormat("report.zr_bet_count"),
		dataIndex: "zrBetCount",
		key: "zrBetCount",
		width: 200,
		sorter: (a, b) => a.zrBetCount - b.zrBetCount,
		align: "center"
	}
	const zrBetAmount: ColumnType<RootObject> = {
		title: newFormat("report.zr_bet_amount"),
		dataIndex: "zrBetAmount",
		key: "zrBetAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.zrBetAmount - b.zrBetAmount
	}
	const zrValidBetAmount: ColumnType<RootObject> = {
		title: newFormat("report.zr_valid_bet_amount"),
		dataIndex: "zrValidBetAmount",
		key: "zrValidBetAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.zrValidBetAmount - b.zrValidBetAmount
	}
	const zrValidBetRecalculationAdjustmentAmount: ColumnType<RootObject> = {
		title: newFormat("report.zr_valid_bet_recalculation_adjustment_amount"),
		dataIndex: "zrValidBetRecalculationAdjustmentAmount",
		key: "zrValidBetRecalculationAdjustmentAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.zrValidBetRecalculationAdjustmentAmount - b.zrValidBetRecalculationAdjustmentAmount
	}
	const zrFactValidBetAmount: ColumnType<RootObject> = {
		title: newFormat("report.zr_fact_valid_bet_amount"),
		dataIndex: "zrFactValidBetAmount",
		key: "zrFactValidBetAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.zrFactValidBetAmount - b.zrFactValidBetAmount
	}
	const zrNetAmount: ColumnType<RootObject> = {
		title: newFormat("report.zr_net_amount"),
		dataIndex: "zrNetAmount",
		key: "zrNetAmount",
		width: 200,
		align: "center",
		render: renderColor,
		sorter: (a, b) => a.zrNetAmount - b.zrNetAmount
	}
	const zrNetRecalculationAdjustmentAmount: ColumnType<RootObject> = {
		title: newFormat("report.zr_net_recalculation_adjustment_amount"),
		dataIndex: "zrNetRecalculationAdjustmentAmount",
		key: "zrNetRecalculationAdjustmentAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.zrNetRecalculationAdjustmentAmount - b.zrNetRecalculationAdjustmentAmount
	}
	const zrFactNetAmount: ColumnType<RootObject> = {
		title: newFormat("report.zr_fact_net_amount"),
		dataIndex: "zrFactNetAmount",
		key: "zrFactNetAmount",
		width: 200,
		align: "center",
		render: renderColor,
		sorter: (a, b) => a.zrFactNetAmount - b.zrFactNetAmount
	}
	const zrVenueMemberRebateAmount: ColumnType<RootObject> = {
		title: newFormat("report.zr_venue_member_rebate_amount"),
		dataIndex: "zrVenueMemberRebateAmount",
		key: "zrVenueMemberRebateAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.zrVenueMemberRebateAmount - b.zrVenueMemberRebateAmount
	}
	const zrMemberRebateRecalculationAdjustmentAmount: ColumnType<RootObject> = {
		title: newFormat("report.zr_member_rebate_recalculation_adjustment_amount"),
		dataIndex: "zrMemberRebateRecalculationAdjustmentAmount",
		key: "zrMemberRebateRecalculationAdjustmentAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.zrMemberRebateRecalculationAdjustmentAmount - b.zrMemberRebateRecalculationAdjustmentAmount
	}
	const zrRewardAmount: ColumnType<RootObject> = {
		title: newFormat("report.zr_reward_amount"),
		dataIndex: "zrRewardAmount",
		key: "zrRewardAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.zrRewardAmount - b.zrRewardAmount
	}
	const zrMemberVenueNetAmount: ColumnType<RootObject> = {
		title: renderTooltip("report.zr_member_venue_net_amount"),
		dataIndex: "zrMemberVenueNetAmount",
		key: "zrMemberVenueNetAmount",
		width: 200,
		align: "center",
		render: renderColor,
		sorter: (a, b) => a.zrMemberVenueNetAmount - b.zrMemberVenueNetAmount
	}
	// qp
	const qpBetCount: ColumnType<RootObject> = {
		title: newFormat("report.qp_bet_count"),
		dataIndex: "qpBetCount",
		key: "qpBetCount",
		width: 200,
		sorter: (a, b) => a.qpBetCount - b.qpBetCount,
		align: "center"
	}
	const qpBetAmount: ColumnType<RootObject> = {
		title: newFormat("report.qp_bet_amount"),
		dataIndex: "qpBetAmount",
		key: "qpBetAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.qpBetAmount - b.qpBetAmount
	}
	const qpValidBetAmount: ColumnType<RootObject> = {
		title: newFormat("report.qp_valid_bet_amount"),
		dataIndex: "qpValidBetAmount",
		key: "qpValidBetAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.qpValidBetAmount - b.qpValidBetAmount
	}
	const qpNetAmount: ColumnType<RootObject> = {
		title: newFormat("report.qp_net_amount"),
		dataIndex: "qpNetAmount",
		key: "qpNetAmount",
		width: 200,
		align: "center",
		render: renderColor,
		sorter: (a, b) => a.qpNetAmount - b.qpNetAmount
	}
	const qpVenueMemberRebateAmount: ColumnType<RootObject> = {
		title: newFormat("report.qp_venue_member_rebate_amount"),
		dataIndex: "qpVenueMemberRebateAmount",
		key: "qpVenueMemberRebateAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.qpVenueMemberRebateAmount - b.qpVenueMemberRebateAmount
	}
	const qpMemberVenueNetAmount: ColumnType<RootObject> = {
		title: renderTooltip("report.qp_member_venue_net_amount"),
		dataIndex: "qpMemberVenueNetAmount",
		key: "qpMemberVenueNetAmount",
		width: 200,
		align: "center",
		render: renderColor,
		sorter: (a, b) => a.qpMemberVenueNetAmount - b.qpMemberVenueNetAmount
	}
	// dj
	const djBetCount: ColumnType<RootObject> = {
		title: newFormat("report.dj_bet_count"),
		dataIndex: "djBetCount",
		key: "djBetCount",
		width: 200,
		sorter: (a, b) => a.djBetCount - b.djBetCount,
		align: "center"
	}
	const djBetAmount: ColumnType<RootObject> = {
		title: newFormat("report.dj_bet_amount"),
		dataIndex: "djBetAmount",
		key: "djBetAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.djBetAmount - b.djBetAmount
	}
	const djValidBetAmount: ColumnType<RootObject> = {
		title: newFormat("report.dj_valid_bet_amount"),
		dataIndex: "djValidBetAmount",
		key: "djValidBetAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.djValidBetAmount - b.djValidBetAmount
	}
	const djValidBetRecalculationAdjustmentAmount: ColumnType<RootObject> = {
		title: newFormat("report.dj_valid_bet_recalculation_adjustment_amount"),
		dataIndex: "djValidBetRecalculationAdjustmentAmount",
		key: "djValidBetRecalculationAdjustmentAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.djValidBetRecalculationAdjustmentAmount - b.djValidBetRecalculationAdjustmentAmount
	}
	const djFactValidBetAmount: ColumnType<RootObject> = {
		title: newFormat("report.dj_fact_valid_bet_amount"),
		dataIndex: "djFactValidBetAmount",
		key: "djFactValidBetAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.djFactValidBetAmount - b.djFactValidBetAmount
	}
	const djNetAmount: ColumnType<RootObject> = {
		title: newFormat("report.dj_net_amount"),
		dataIndex: "djNetAmount",
		key: "djNetAmount",
		width: 200,
		align: "center",
		render: renderColor,
		sorter: (a, b) => a.djNetAmount - b.djNetAmount
	}
	const djNetRecalculationAdjustmentAmount: ColumnType<RootObject> = {
		title: newFormat("report.dj_net_recalculation_adjustment_amount"),
		dataIndex: "djNetRecalculationAdjustmentAmount",
		key: "djNetRecalculationAdjustmentAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.djNetRecalculationAdjustmentAmount - b.djNetRecalculationAdjustmentAmount
	}
	const djFactNetAmount: ColumnType<RootObject> = {
		title: newFormat("report.dj_fact_net_amount"),
		dataIndex: "djFactNetAmount",
		key: "djFactNetAmount",
		width: 200,
		align: "center",
		render: renderColor,
		sorter: (a, b) => a.djFactNetAmount - b.djFactNetAmount
	}
	const djVenueMemberRebateAmount: ColumnType<RootObject> = {
		title: newFormat("report.dj_venue_member_rebate_amount"),
		dataIndex: "djVenueMemberRebateAmount",
		key: "djVenueMemberRebateAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.djVenueMemberRebateAmount - b.djVenueMemberRebateAmount
	}
	const djMemberRebateRecalculationAdjustmentAmount: ColumnType<RootObject> = {
		title: newFormat("report.dj_member_rebate_recalculation_adjustment_amount"),
		dataIndex: "djMemberRebateRecalculationAdjustmentAmount",
		key: "djMemberRebateRecalculationAdjustmentAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.djMemberRebateRecalculationAdjustmentAmount - b.djMemberRebateRecalculationAdjustmentAmount
	}
	const djMemberVenueNetAmount: ColumnType<RootObject> = {
		title: renderTooltip("report.dj_member_venue_net_amount"),
		dataIndex: "djMemberVenueNetAmount",
		key: "djMemberVenueNetAmount",
		width: 200,
		align: "center",
		render: renderColor,
		sorter: (a, b) => a.djMemberVenueNetAmount - b.djMemberVenueNetAmount
	}
	// cp
	const cpBetCount: ColumnType<RootObject> = {
		title: newFormat("report.cp_bet_count"),
		dataIndex: "cpBetCount",
		key: "cpBetCount",
		width: 200,
		sorter: (a, b) => a.cpBetCount - b.cpBetCount,
		align: "center"
	}
	const cpBetAmount: ColumnType<RootObject> = {
		title: newFormat("report.cp_bet_amount"),
		dataIndex: "cpBetAmount",
		key: "cpBetAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.cpBetAmount - b.cpBetAmount
	}
	const cpValidBetAmount: ColumnType<RootObject> = {
		title: newFormat("report.cp_valid_bet_amount"),
		dataIndex: "cpValidBetAmount",
		key: "cpValidBetAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.cpValidBetAmount - b.cpValidBetAmount
	}
	const cpValidBetRecalculationAdjustmentAmount: ColumnType<RootObject> = {
		title: newFormat("report.cp_valid_bet_recalculation_adjustment_amount"),
		dataIndex: "cpValidBetRecalculationAdjustmentAmount",
		key: "cpValidBetRecalculationAdjustmentAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.cpValidBetRecalculationAdjustmentAmount - b.cpValidBetRecalculationAdjustmentAmount
	}
	const cpFactValidBetAmount: ColumnType<RootObject> = {
		title: newFormat("report.cp_fact_valid_bet_amount"),
		dataIndex: "cpFactValidBetAmount",
		key: "cpFactValidBetAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.cpFactValidBetAmount - b.cpFactValidBetAmount
	}
	const cpNetAmount: ColumnType<RootObject> = {
		title: newFormat("report.cp_net_amount"),
		dataIndex: "cpNetAmount",
		key: "cpNetAmount",
		width: 200,
		align: "center",
		render: renderColor,
		sorter: (a, b) => a.cpNetAmount - b.cpNetAmount
	}
	const cpNetRecalculationAdjustmentAmount: ColumnType<RootObject> = {
		title: newFormat("report.cp_net_recalculation_adjustment_amount"),
		dataIndex: "cpNetRecalculationAdjustmentAmount",
		key: "cpNetRecalculationAdjustmentAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.cpNetRecalculationAdjustmentAmount - b.cpNetRecalculationAdjustmentAmount
	}
	const cpFactNetAmount: ColumnType<RootObject> = {
		title: newFormat("report.cp_fact_net_amount"),
		dataIndex: "cpFactNetAmount",
		key: "cpFactNetAmount",
		width: 200,
		align: "center",
		render: renderColor,
		sorter: (a, b) => a.cpFactNetAmount - b.cpFactNetAmount
	}
	const cpVenueMemberRebateAmount: ColumnType<RootObject> = {
		title: newFormat("report.cp_venue_member_rebate_amount"),
		dataIndex: "cpVenueMemberRebateAmount",
		key: "cpVenueMemberRebateAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.cpVenueMemberRebateAmount - b.cpVenueMemberRebateAmount
	}
	const cpMemberRebateRecalculationAdjustmentAmount: ColumnType<RootObject> = {
		title: newFormat("report.cp_member_rebate_recalculation_adjustment_amount"),
		dataIndex: "cpMemberRebateRecalculationAdjustmentAmount",
		key: "cpMemberRebateRecalculationAdjustmentAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.cpMemberRebateRecalculationAdjustmentAmount - b.cpMemberRebateRecalculationAdjustmentAmount
	}
	const cpMemberVenueNetAmount: ColumnType<RootObject> = {
		title: renderTooltip("report.cp_member_venue_net_amount"),
		dataIndex: "cpMemberVenueNetAmount",
		key: "cpMemberVenueNetAmount",
		width: 200,
		align: "center",
		render: renderColor,
		sorter: (a, b) => a.cpMemberVenueNetAmount - b.cpMemberVenueNetAmount
	}
	// dy
	const dyBetCount: ColumnType<RootObject> = {
		title: newFormat("report.dy_bet_count"),
		dataIndex: "dyBetCount",
		key: "dyBetCount",
		width: 200,
		sorter: (a, b) => a.dyBetCount - b.dyBetCount,
		align: "center"
	}
	const dyBetAmount: ColumnType<RootObject> = {
		title: newFormat("report.dy_bet_amount"),
		dataIndex: "dyBetAmount",
		key: "dyBetAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.dyBetAmount - b.dyBetAmount
	}
	const dyValidBetAmount: ColumnType<RootObject> = {
		title: newFormat("report.dy_valid_bet_amount"),
		dataIndex: "dyValidBetAmount",
		key: "dyValidBetAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.dyValidBetAmount - b.dyValidBetAmount
	}
	const dyNetAmount: ColumnType<RootObject> = {
		title: newFormat("report.dy_net_amount"),
		dataIndex: "dyNetAmount",
		key: "dyNetAmount",
		width: 200,
		align: "center",
		render: renderColor,
		sorter: (a, b) => a.dyNetAmount - b.dyNetAmount
	}
	const dyVenueMemberRebateAmount: ColumnType<RootObject> = {
		title: newFormat("report.dy_venue_member_rebate_amount"),
		dataIndex: "dyVenueMemberRebateAmount",
		key: "dyVenueMemberRebateAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.dyVenueMemberRebateAmount - b.dyVenueMemberRebateAmount
	}
	const dyActivityBonusAmount: ColumnType<RootObject> = {
		title: newFormat("report.dy_activity_bonus_amount"),
		dataIndex: "dyActivityBonusAmount",
		key: "dyActivityBonusAmount",
		width: 200,
		align: "center",
		render: renderFormat,
		sorter: (a, b) => a.dyActivityBonusAmount - b.dyActivityBonusAmount
	}
	const dyMemberVenueNetAmount: ColumnType<RootObject> = {
		title: renderTooltip("report.dy_member_venue_net_amount"),
		dataIndex: "dyMemberVenueNetAmount",
		key: "dyMemberVenueNetAmount",
		width: 200,
		align: "center",
		render: renderColor,
		sorter: (a, b) => a.dyMemberVenueNetAmount - b.dyMemberVenueNetAmount
	}

	const serviceFeeName: ColumnType<RootObject> = {
		title: newFormat("report.project"),
		dataIndex: "name",
		key: "name",
		align: "center"
	}
	const serviceFeeValue: ColumnType<RootObject> = {
		title: newFormat("report.service_amount_contribution"),
		dataIndex: "value",
		key: "value",
		align: "center",
		render: renderFormat
	}
	const serviceFeeProportion: ColumnType<RootObject> = {
		title: "占比",
		dataIndex: "proportion",
		key: "proportion",
		align: "center",
		render: v => (v !== "-" ? v + "%" : "-")
	}
	const clubAmountValueAddedName: ColumnType<RootObject> = {
		title: "增值消费类型",
		dataIndex: "valueAddedName",
		key: "valueAddedName",
		align: "center"
	}
	const clubAmountValueAddedAmount: ColumnType<RootObject> = {
		title: "消费金额",
		dataIndex: "valueAddedAmount",
		key: "valueAddedAmount",
		align: "center",
		render: renderFormat
	}

	const accountAdjustmentName: ColumnType<RootObject> = {
		title: "账户调整类型",
		dataIndex: "name",
		key: "name",
		align: "center"
	}
	const accountAdjustmentValue: ColumnType<RootObject> = {
		title: "调整金额",
		dataIndex: "value",
		key: "value",
		align: "center",
		render: renderFormat
	}

	const memberReturnName: ColumnType<RootObject> = {
		title: "返水项目",
		dataIndex: "name",
		key: "name",
		align: "center"
	}
	const memberReturnValue: ColumnType<RootObject> = {
		title: "返水金额",
		dataIndex: "value",
		key: "value",
		align: "center",
		render: renderFormat
	}

	const otherName: ColumnType<RootObject> = {
		title: "其他盈亏",
		dataIndex: "name",
		key: "name",
		align: "center"
	}
	const otherValue: ColumnType<RootObject> = {
		title: "金额",
		dataIndex: "value",
		key: "value",
		align: "center",
		render: renderFormat
	}

	return {
		userName,
		nickName,
		accountType,
		member_parentProxyName,
		member_topProxyName,
		labelName,
		windControlName,
		member_betCount,
		daily_netAmount,
		memberRebateAmountByProxy,
		memberRebateAmountByPlat,
		artificialPatchAmount,
		serviceChargeRound,
		valueAddedTotalAmount,
		member_netProfit,
		dateTime,
		venueName,
		venueType,
		betType,
		effectiveBetAmount,
		pumPing,
		betProfitLoss,
		member_rebateAmount,
		sort_artificialPatchAmount,
		betterNo,
		staticsDate,
		serviceAmountContribution,
		validBetRecalculationAdjustmentAmount,
		realValidBetAmount,
		memberAccount,
		deviceNumber,
		deviceVersion,
		locationIP,
		loginAddress,
		loginStatus,
		loginTerminal,
		loginTime,
		loginUser,
		checkedStatus,
		loginIP,
		member_netAmount,
		accountAdjustmentAmount,
		rebateAdjustmentAmount,
		betNetAmount,
		cycleName,
		member_memberName,
		member_betAmount,
		member_validBetAmount,
		dxClubBetCount,
		dxClubServiceChargeRoundAmount,
		dxClubServiceChargeHandAmount,
		dxClubTotalServiceChargeContributionAmount,
		dxClubNetAmount,
		dxSquidNetAmount,
		dxInsureBetCount,
		dxInsureBetAmount,
		dxInsureValidBetAmount,
		dxInsureNetAmount,
		dxValueAddedTotalAmount,
		dxClubMemberRebateAmount,
		dxMemberVenueNetAmount,
		otherBetCount,
		otherBetAmount,
		otherValidBetAmount,
		otherValidBetRecalculationAdjustmentAmount,
		otherFactValidBetAmount,
		otherNetAmount,
		otherNetRecalculationAdjustmentAmount,
		otherFactNetAmount,
		otherVenueMemberRebateAmount,
		otherMemberRebateRecalculationAdjustmentAmount,
		// otherAmount,
		otherMemberVenueNetAmount,
		tyBetCount,
		tyBetAmount,
		tyValidBetAmount,
		tyValidBetRecalculationAdjustmentAmount,
		tyFactValidBetAmount,
		tyNetAmount,
		tyNetRecalculationAdjustmentAmount,
		tyFactNetAmount,
		tyVenueMemberRebateAmount,
		tyMemberRebateRecalculationAdjustmentAmount,
		tyMemberVenueNetAmount,
		zrBetCount,
		zrBetAmount,
		zrValidBetAmount,
		zrValidBetRecalculationAdjustmentAmount,
		zrFactValidBetAmount,
		zrNetAmount,
		zrNetRecalculationAdjustmentAmount,
		zrFactNetAmount,
		zrVenueMemberRebateAmount,
		zrMemberRebateRecalculationAdjustmentAmount,
		zrRewardAmount,
		zrMemberVenueNetAmount,
		qpBetCount,
		qpBetAmount,
		qpValidBetAmount,
		qpNetAmount,
		qpVenueMemberRebateAmount,
		qpMemberVenueNetAmount,
		djBetCount,
		djBetAmount,
		djValidBetAmount,
		djValidBetRecalculationAdjustmentAmount,
		djFactValidBetAmount,
		djNetAmount,
		djNetRecalculationAdjustmentAmount,
		djFactNetAmount,
		djVenueMemberRebateAmount,
		djMemberRebateRecalculationAdjustmentAmount,
		djMemberVenueNetAmount,
		cpBetCount,
		cpBetAmount,
		cpValidBetAmount,
		cpValidBetRecalculationAdjustmentAmount,
		cpFactValidBetAmount,
		cpNetAmount,
		cpNetRecalculationAdjustmentAmount,
		cpFactNetAmount,
		cpVenueMemberRebateAmount,
		cpMemberRebateRecalculationAdjustmentAmount,
		cpMemberVenueNetAmount,
		dyBetCount,
		dyBetAmount,
		dyValidBetAmount,
		dyNetAmount,
		dyVenueMemberRebateAmount,
		dyActivityBonusAmount,
		dyMemberVenueNetAmount,
		dxClubServiceChargeHandBetCount,
		dxClubServiceChargeContributionAmount,
		otherBetNetAmount,
		serviceFeeName,
		serviceFeeValue,
		serviceFeeProportion,
		clubAmountValueAddedName,
		clubAmountValueAddedAmount,
		accountAdjustmentName,
		accountAdjustmentValue,
		memberReturnName,
		memberReturnValue,
		otherName,
		otherValue,
		totalOtherAmount,
		daily_betCount,
		daily_betAmount,
		daily_netProfit
	}
}

export default useReportColumn
